package reflect;

import java.util.Scanner;

public class ReflectDemo2 {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        Person p = new Person();
        System.out.println(p);

        // 通过反射创建对象，获取要实例化对象所对应的类的Class对象（类对象）
        //Class c = Class.forName("reflect.Person");
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个类名：");
        String classname = scan.nextLine();
        Class c = Class.forName(classname);
        /*
        Class提供了一个方法：Object newInstance()
        它会使用其表示的类的无参构造器实例化该对象，并将实例化后的对象向上造型为Object类型，将其返回
        该类要有无参构造，且可以被访问，否则会抛出异常
        java.io.FileInputStream
        * */
        Object obj = c.newInstance();//new Person();
        System.out.println(obj);
    }
}
